473,732 Members | 2,043 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Python/Tkinter/tk crash [long]

Hi all,

I was creating a Tkinter widget in the style of the reversed tabs below Excel
worksheets and I stepped in a serious problem: the code I made makes python
crash with a seg fault, bus error or X11 BadGC error on both Solaris (2.6 and
2.7) and Linux (Mandrake 8.0); it doesn't crash on Windows. I tried to simplify
the script, but I couldn't reproduce the crash with a simpler code. So the code
below is somewhat long; sorry for that.

To make it crash, just run the script and click on a tab. It usually crashes at
the first click, but you may have to play a bit with the tabs. I tried to run
Python through gdb to see where the crash happens, but it seems to be quite
random. Maybe a memory corruption?

There's a simple workaround, but with drawbacks: at the beginning of the
__update method, if I do not destroy and re-create the Canvas, but simply empty
its contents, the script works. But it keeps the commands declared created at
the tcl level for the former bindings, so it silently eats up memory.

My setup is Python 2.1 with tcl/tk 8.3.4. I searched the bug database but this
bug doesn't seem to be known. But maybe it was corrected in a newer Python or tk
version? Can anyone confirm that?

Thanks a lot in advance.

Here is the code:

--TabRow.py----------------------------------
from Tkinter import *
## CLASS GENERIC.CALLBAC K:
## =============== ========
# Instances are generic callbacks for buttons, bindings, etc...

class GenericCallback :

def __init__(self, callback, *commonArgs):
self.callback = callback
self.__commonAr gs = commonArgs

def __call__(self, *args):
return apply(self.call back, self.__commonAr gs + args)

## CLASS TAB.ROW:
## ==============
# Excel-style reverse tabs in a row

class TabRow(Frame):

## CLASS ATTRIBUTES:
## -----------------

defaultHeight = 24 # Default height for row
verticalMargin = 2 # Margin at the top and the bottom of the tabs
tabBorderWidth = 10 # Width for the descending and ascending lines at the
# border of tabs
## METHOD __INIT__:
## ----------------
# Constructor
# Parameters: the ones for the Frame class
# Recognized options: the ones for the Frame class +
# - tabs: list of tabs
# - currenttab: active element in tabs, or its index
# - tabchangecallba ck: function called when the user clicks on a tab
# (1 param = text; returns a boolean)
# - font: the font to use to display the texts in the tabs
# - activebackgroun d: the background for the current tab

def __init__(self, *args, **options):

## INSTANCE ATTRIBUTES:
## --------------------

self.__tabs = ()
self.__tabChang eCallback = None
self.__tabsCanv as = None
self.__currentT abIndex = 0
self.__tabPosit ions = None
self.__canvasHe ight = TabRow.defaultH eight

## Super-init
apply(Frame.__i nit__, (self,) + args)
## Configure/update
self.configure( options)
## METHOD CONFIGURE:
## -----------------
# Changes the options for the tab row

def configure(self, dictOptions={}, **options):
options.update( dictOptions)
## Get specific options
self.__tabs = options.get("ta bs", self.__tabs)
self.__tabChang eCallback = options.get('ta bchangecallback ',
self.__tabChang eCallback)
## Get index for current tab
if options.has_key ('currenttab'):
if type(options['currenttab']) == type(0):
self.__currentT abIndex = options['currenttab']
else:
indices = [i for i in range(len(self. __tabs))
if self.__tabs[i] == options['currenttab']]
if indices: self.__currentT abIndex = indices[0]
## Remember forced height for canvas if any
self.__canvasHe ight = options.get('he ight', self.__canvasHe ight)
## Remove unwanted options
needUpdate = 0
for o in ('tabs', 'currenttab', 'tabchangecallb ack',
'font', 'activebackgrou nd', 'height'):
if not options.has_key (o): continue
del options[o]
needUpdate = 1
if options.has_key ('bg') or options.has_key ('background'): needUpdate = 1
## If needed, apply options on the frame
if options:
apply(Frame.con figure, (self,), options)
## If needed, update display
if needUpdate: self.__update()
## METHOD __UPDATE:
## ----------------
# Updates the display

def __update(self):
## (Re)create canvas for tabs
if self.__tabsCanv as is not None:
self.__tabsCanv as.grid_forget( )
self.__tabsCanv as.destroy()
self.__tabsCanv as = Canvas(self, bg=self.cget('b ackground'),
height=self.__c anvasHeight)
self.__tabsCanv as.grid(row=0, column=0, sticky='nswe')
## Build tabs
tabIndex, pos = 0, 0
self.__tabPosit ions = []
activeTabRight = 0
for text in self.__tabs:
## Standard tag + specific tag if tab is the current one
tabTag = 'TAB_%s' % tabIndex
tags = [tabTag]
if tabIndex == self.__currentT abIndex: tags.append("CU RRENT_TAB")
tags = tuple(tags)
## Remember tab position
self.__tabPosit ions.append(pos )
## Draw text
textId = self.__tabsCanv as.create_text( pos + TabRow.tabBorde rWidth,
self.__canvasHe ight / 2,
text=text, anchor=W, tags=tags,
font=('helvetic a', 10, 'bold'))
## Polygon for tab, including line from left side if current tab
textBBox = self.__tabsCanv as.bbox(textId)
x = textBBox[2]
coords = [
pos, TabRow.vertical Margin,
pos + TabRow.tabBorde rWidth,
self.__canvasHe ight - TabRow.vertical Margin,
x, self.__canvasHe ight - TabRow.vertical Margin,
x + TabRow.tabBorde rWidth, TabRow.vertical Margin ]
if tabIndex == self.__currentT abIndex:
coords = [0, TabRow.vertical Margin] + coords
activeTabRight = x + TabRow.tabBorde rWidth
## Get polygon background
polygOpt = {'fill' : self.__tabsCanv as.cget('backgr ound'),
'outline':'', 'tags':tags}
if tabIndex == self.__currentT abIndex: polygOpt['fill'] = 'white'
## Draw polygon
polygId = apply(self.__ta bsCanvas.create _polygon, coords, polygOpt)
lineId = apply(self.__ta bsCanvas.create _line, coords,
{'fill':'black' , 'tags':tags})
## Put it under text
self.__tabsCanv as.lower(lineId )
self.__tabsCanv as.lower(polygI d)
## Binding for tab change
self.__tabsCanv as.tag_bind(tab Tag, '<ButtonReleas e-1>',
GenericCallback (self.__changeT ab, tabIndex, text))
## Update position and tab index
pos = x + TabRow.tabBorde rWidth / 2
tabIndex += 1
## End of display: draw line from active tab to right border
## and put active tab on top
self.__tabsCanv as.create_line( activeTabRight, TabRow.vertical Margin,
pos + TabRow.tabBorde rWidth / 2,
TabRow.vertical Margin)
self.__tabsCanv as.tag_raise("C URRENT_TAB")
## METHOD __CHANGE.TAB:
## --------------------
# Called when the user clicks on a tab

def __changeTab(sel f, tabIndex, text, event=None):
if self.__tabChang eCallback is None: return
if not self.__tabChang eCallback(text) : return
self.__currentT abIndex = tabIndex
self.__update()

if __name__ == '__main__':
root = Tk()

def ct(t):
print t
return 1

r = TabRow(root, tabs=('foo', 'bar', 'spam'), tabchangecallba ck=ct)
r.pack()
root.mainloop()
---------------------------------------------
--
- Eric Brunel <er*********@pr agmadev.com> -
PragmaDev : Real Time Software Development Tools - http://www.pragmadev.com

Jul 18 '05 #1
8 3212
On Thursday 14 August 2003 10:10 am, Eric Brunel wrote:
Hi all,

I was creating a Tkinter widget in the style of the reversed tabs below
Excel worksheets and I stepped in a serious problem: the code I made makes
python crash with a seg fault, bus error or X11 BadGC error on both Solaris
(2.6 and 2.7) and Linux (Mandrake 8.0); it doesn't crash on Windows. I
tried to simplify the script, but I couldn't reproduce the crash with a
simpler code. So the code below is somewhat long; sorry for that.

Eric,

Have you looked at Pmw (Python Mega Widgets) they have a NoteBook (tabbed
pane) widget that looks like what you want...
Regards
Martin

Jul 18 '05 #2
I can duplicate the signal 11 on RedHat Linux 9 and the following
relevant packages installed:
python-2.2.2-26
tcl-8.3.5-88
tk-8.3.5-88

My traceback looks like the following. I believe that the lines listed
as "Tk_GetItemType s" actually correspond to static functions defined in
tkCanvas.c.
#0 0x4011b1a7 in Tk_GetItemTypes () from /usr/lib/libtk8.3.so
#1 0x4011aec1 in Tk_GetItemTypes () from /usr/lib/libtk8.3.so
#2 0x4011ac25 in Tk_GetItemTypes () from /usr/lib/libtk8.3.so
#3 0x400d1a7c in Tk_HandleEvent () from /usr/lib/libtk8.3.so
#4 0x400d1e7c in TkQueueEventFor AllChildren () from /usr/lib/libtk8.3.so
#5 0x401c300d in Tcl_ServiceEven t () from /usr/lib/libtcl8.3.so
#6 0x401c326d in Tcl_DoOneEvent () from /usr/lib/libtcl8.3.so
#7 0x40062115 in Tkapp_MainLoop (self=0x815dfb0 , args=0x8269358) at Modules/_tkinter.c:1696
#8 0x080d0df4 in PyCFunction_Cal l ()
#9 0x0807a65e in PyEval_EvalCode ()
#10 0x0807b0ce in PyEval_EvalCode Ex ()
#11 0x0807c62b in PyEval_GetFuncD esc ()
#12 0x0807a5a3 in PyEval_EvalCode ()
#13 0x0807b0ce in PyEval_EvalCode Ex ()
#14 0x08077fc5 in PyEval_EvalCode ()
#15 0x08097e29 in PyRun_FileExFla gs ()
#16 0x08096d90 in PyRun_SimpleFil eExFlags ()
#17 0x080966da in PyRun_AnyFileEx Flags ()
#18 0x08053a19 in Py_Main ()
#19 0x08053469 in main ()
#20 0x42015574 in __libc_start_ma in () from /lib/tls/libc.so.6

This leads me to two things: first, reproduce this using a libtk
compiled with debugging information. second, this is likely to be a Tk
bug and not a Python bug given where it happens. It should be possible
to write a test-case that is purely tcl code..

In fact, the following tcl code crashed on me once (not in gdb, so I
can't compare stack traces), and when I run it under valgrind the *first*
click I make sprays "invalid read" and "invalid write" errors such as
==23796== Invalid write of size 4
==23796== at 0x4026ACEB: (within /usr/lib/libtk8.3.so)
==23796== by 0x4026AC24: (within /usr/lib/libtk8.3.so)
==23796== by 0x40221A7B: Tk_HandleEvent (in /usr/lib/libtk8.3.so)
==23796== by 0x40221E7B: (within /usr/lib/libtk8.3.so)
==23796== Address 0x41493D98 is 188 bytes inside a block of size 460 free'd
==23796== at 0x40161048: free (in /usr/lib/valgrind/valgrind.so)
==23796== by 0x402D8368: TclpFree (in /usr/lib/libtcl8.3.so)
==23796== by 0x402DD4F4: Tcl_Free (in /usr/lib/libtcl8.3.so)
==23796== by 0x402685C5: (within /usr/lib/libtk8.3.so)

Now, in the python and wish cases, the shared libraries are loaded at
different addresses. but note that the number of bytes between
TK_HandleEvent and the next stack frame inwards (called Tk_GetItemTypes
by gdb) is the same distance on my system.

Jeff

# --- tk program kinda like original python program
proc p {} {
puts p
destroy .c
canvas .c
grid .c

set tabIndex 0
set pos 0
foreach p { a b c } {
set tags[list TAB_$tabIndex]
if {$tabIndex == 1} {
lappend tags CURRENT_TAB
}
set textId [.c create text $pos 10 -text $p -anchor w -tags $tags]
.c bind TAB_$tabIndex <ButtonReleas e> p
incr tabIndex 1
incr pos 20
}
}
p
# ---

Jul 18 '05 #3
Martin Franklin wrote:
On Thursday 14 August 2003 10:10 am, Eric Brunel wrote:
Hi all,

I was creating a Tkinter widget in the style of the reversed tabs below
Excel worksheets and I stepped in a serious problem: the code I made makes
python crash with a seg fault, bus error or X11 BadGC error on both Solaris
(2.6 and 2.7) and Linux (Mandrake 8.0); it doesn't crash on Windows. I
tried to simplify the script, but I couldn't reproduce the crash with a
simpler code. So the code below is somewhat long; sorry for that.


Eric,

Have you looked at Pmw (Python Mega Widgets) they have a NoteBook (tabbed
pane) widget that looks like what you want...


I do know and use extensively this package. The behaviour I'd like to implement
is somewhat different than the one in Pmw.NoteBook. Please also note that
despite its length, the code I posted is only an extract of the actual code.

Thanks anyway.
--
- Eric Brunel <er*********@pr agmadev.com> -
PragmaDev : Real Time Software Development Tools - http://www.pragmadev.com

Jul 18 '05 #4
Jeff Epler wrote:
I can duplicate the signal 11 on RedHat Linux 9 and the following
relevant packages installed:
python-2.2.2-26
tcl-8.3.5-88
tk-8.3.5-88

My traceback looks like the following. I believe that the lines listed
as "Tk_GetItemType s" actually correspond to static functions defined in
tkCanvas.c.
#0 0x4011b1a7 in Tk_GetItemTypes () from /usr/lib/libtk8.3.so
#1 0x4011aec1 in Tk_GetItemTypes () from /usr/lib/libtk8.3.so
#2 0x4011ac25 in Tk_GetItemTypes () from /usr/lib/libtk8.3.so
#3 0x400d1a7c in Tk_HandleEvent () from /usr/lib/libtk8.3.so
#4 0x400d1e7c in TkQueueEventFor AllChildren () from /usr/lib/libtk8.3.so
#5 0x401c300d in Tcl_ServiceEven t () from /usr/lib/libtcl8.3.so
#6 0x401c326d in Tcl_DoOneEvent () from /usr/lib/libtcl8.3.so
#7 0x40062115 in Tkapp_MainLoop (self=0x815dfb0 , args=0x8269358) at Modules/_tkinter.c:1696
#8 0x080d0df4 in PyCFunction_Cal l ()
#9 0x0807a65e in PyEval_EvalCode ()
#10 0x0807b0ce in PyEval_EvalCode Ex ()
#11 0x0807c62b in PyEval_GetFuncD esc ()
#12 0x0807a5a3 in PyEval_EvalCode ()
#13 0x0807b0ce in PyEval_EvalCode Ex ()
#14 0x08077fc5 in PyEval_EvalCode ()
#15 0x08097e29 in PyRun_FileExFla gs ()
#16 0x08096d90 in PyRun_SimpleFil eExFlags ()
#17 0x080966da in PyRun_AnyFileEx Flags ()
#18 0x08053a19 in Py_Main ()
#19 0x08053469 in main ()
#20 0x42015574 in __libc_start_ma in () from /lib/tls/libc.so.6

This leads me to two things: first, reproduce this using a libtk
compiled with debugging information. second, this is likely to be a Tk
bug and not a Python bug given where it happens. It should be possible
to write a test-case that is purely tcl code..


Thanks a lot: you're absolutely right. The tcl code you wrote behaves exactly
the same than the Python script I sent: when I run it, the first click on any
text ends in a seg fault or a bus error. I should have tried to reproduce the
bug in pure tcl, but I'm not really fluent in it...

I'll try to figure out exactly what happens and submit the problem to the
c.l.tcl newsgroup.

Thanks!
--
- Eric Brunel <er*********@pr agmadev.com> -
PragmaDev : Real Time Software Development Tools - http://www.pragmadev.com

Jul 18 '05 #5
Eric Brunel <er*********@pr agmadev.com> wrote in message news:<bh******* ***@news-reader5.wanadoo .fr>...
Hi all,

I was creating a Tkinter widget in the style of the reversed tabs below Excel
worksheets and I stepped in a serious problem: the code I made makes python
crash with a seg fault, bus error or X11 BadGC error on both Solaris (2.6 and
2.7) and Linux (Mandrake 8.0); it doesn't crash on Windows.


FWIW: it crashes under Red Hat 7.2+Python 2.2 and under Red Hat 7.3+Python 2.3
too.
Jul 18 '05 #6
Martin Franklin wrote:
On Thursday 14 August 2003 10:10 am, Eric Brunel wrote:
There's a simple workaround, but with drawbacks: at the beginning of the
__update method, if I do not destroy and re-create the Canvas, but simply
empty its contents, the script works. But it keeps the commands declared
created at the tcl level for the former bindings, so it silently eats up
memory.


does it still eat up memory if you, for example, change the top of the
__update method to:

def __update(self):
if not self.__tabsCanv as:
self.__tabsCanv as = Canvas(self, bg=self.cget('b ackground'),
height=self.__c anvasHeight)
self.__tabsCanv as.grid(row=0, column=0, sticky='nswe')
self.__tabsCanv as.delete("all" )


Yes it does: the call to delete('all') on the canvas doesn't delete the
callbacks registered at the tcl level for all the bindings done in the
canvas. These commands are only deleted when the canvas itself is deleted.

Consider the following script:

--eatmem.py---------------------------
from Tkinter import *

root = Tk()

cnv = Canvas(root)
cnv.pack()

def spam(*w): print spam

def eat():
cnv.delete(ALL)
l = cnv.create_line (10, 10, 10, 30)
cnv.tag_bind(l, '<1>', spam)
root.after(100, eat)

eat()

root.mainloop()
--------------------------------------

If you run it and monitor the size of the running process either with the
task manager on Windows or a "ps -A -o vsz -o args | grep eatmem' on Linux,
you'll notice the memory occupied by the program slowly but steadily grows
(you'll have to wait a little before it starts growing). Remove the bind, and
it doesn't happen anymore.

The same happens for commands in menus: they're only deleted when the whole
menu goes away, not when the entry having the command is deleted.

If you know something that can be done about that, I'm interested!
--
- Eric Brunel <er*********@pr agmadev.com> -
PragmaDev : Real Time Software Development Tools - http://www.pragmadev.com

Jul 18 '05 #7
On Thu, 14 Aug 2003 09:10:22 +0000, Eric Brunel wrote:
Hi all,

I was creating a Tkinter widget in the style of the reversed tabs below Excel
worksheets and I stepped in a serious problem: the code I made makes python
crash with a seg fault, bus error or X11 BadGC error on both Solaris (2.6 and
2.7) and Linux (Mandrake 8.0); it doesn't crash on Windows. I tried to simplify
the script, but I couldn't reproduce the crash with a simpler code. So the code
below is somewhat long; sorry for that.

To make it crash, just run the script and click on a tab. It usually crashes at
the first click, but you may have to play a bit with the tabs. I tried to run
Python through gdb to see where the crash happens, but it seems to be quite
random. Maybe a memory corruption?

There's a simple workaround, but with drawbacks: at the beginning of the
__update method, if I do not destroy and re-create the Canvas, but simply empty
its contents, the script works. But it keeps the commands declared created at
the tcl level for the former bindings, so it silently eats up memory.


As far as I understand, the __changeTab method is called when an event
occurs on the __tabsCanvas. But one of the first actions of the __update
method (which is called by __changeTab) is to destroy the __tabsCanvas
object.

So DURING the callback call you are destroying the object to which the
callback is bound. I wonder if this is the cause of the blow up at the
return of the callback (it may depend on how the memory is reallocated
on different systems).

Just my 0.02 euro guess

--
Pedro
Jul 18 '05 #8
Pedro Rodriguez wrote:
On Thu, 14 Aug 2003 09:10:22 +0000, Eric Brunel wrote:

Hi all,

I was creating a Tkinter widget in the style of the reversed tabs below Excel
worksheets and I stepped in a serious problem: the code I made makes python
crash with a seg fault, bus error or X11 BadGC error on both Solaris (2.6 and
2.7) and Linux (Mandrake 8.0); it doesn't crash on Windows. I tried to simplify
the script, but I couldn't reproduce the crash with a simpler code. So the code
below is somewhat long; sorry for that.

To make it crash, just run the script and click on a tab. It usually crashes at
the first click, but you may have to play a bit with the tabs. I tried to run
Python through gdb to see where the crash happens, but it seems to be quite
random. Maybe a memory corruption?

There's a simple workaround, but with drawbacks: at the beginning of the
__update method, if I do not destroy and re-create the Canvas, but simply empty
its contents, the script works. But it keeps the commands declared created at
the tcl level for the former bindings, so it silently eats up memory.

As far as I understand, the __changeTab method is called when an event
occurs on the __tabsCanvas. But one of the first actions of the __update
method (which is called by __changeTab) is to destroy the __tabsCanvas
object.

So DURING the callback call you are destroying the object to which the
callback is bound. I wonder if this is the cause of the blow up at the
return of the callback (it may depend on how the memory is reallocated
on different systems).


In fact, you're absolutely right, but it still shouldn't result in a crash. I
also discovered that the problem only happens with ButtonRelease events, and not
ButtonPress ones. Apparently, the tcl interpreter doesn't properly remembers
that the pointer on the canvas shouldn't be freed until the binding is
completely executed.

I've reported the problem to the comp.lang.tcl newsgroup. I hope they'll have a
solution for it, because I can't figure out by myself what I should do to
prevent the crash (I'm not that familiar with the code for tcl/tk). For the
moment, I'll use bindings on ButtonPress's rather than ButtonRelease's .

Thanks a lot to all who answered anyway!
--
- Eric Brunel <er*********@pr agmadev.com> -
PragmaDev : Real Time Software Development Tools - http://www.pragmadev.com

Jul 18 '05 #9

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

4
3846
by: Logan | last post by:
Several people asked me for the following HOWTO, so I decided to post it here (though it is still very 'alpha' and might contain many (?) mistakes; didn't test what I wrote, but wrote it - more or less - during my own installation of Python 2.3 on Fedora Core 1 Linux for a friend of mine). Anyway, HTH, L.
3
2343
by: Mickel Grönroos | last post by:
Hi everybody, I'm using QuickTimeTcl (3.1) to be able to play movie files in my Tkinter application (Python 2.3.2) on Windows 2000. I was planning to write a simple wrapper class, QuickTimeMovie, that would wrap up the QuickTimeTcl Tcl extension as a Python class. All seems to work pretty fine until the Tkinter application is closed, when the Python interpreter crashes with an error of the following kind: The instruction at...
0
1312
by: Bryan Olson | last post by:
I've run into a problem with Python/TkInter crashing, with an attempt to read illegal addresses, on Win on Win2000 and WinXP. With some web-searching, I found that people say not to manipulate TkInter from multiple threads, except that the call event_generate() is safe. I assume the call adds an event to Tk's queue, and later the thread running mainloop will() pick up the event. I tried to write a general-purpose thread-runner. In...
0
325
by: Kurt B. Kaiser | last post by:
Patch / Bug Summary ___________________ Patches : 398 open ( +5) / 3334 closed (+19) / 3732 total (+24) Bugs : 904 open ( -4) / 6011 closed (+36) / 6915 total (+32) RFE : 222 open ( -1) / 231 closed ( +2) / 453 total ( +1) New / Reopened Patches ______________________
14
2690
by: Hendrik van Rooyen | last post by:
Hi, I get the following: hvr@LINUXBOXMicrocorp:~/Controller/libpython display.py UpdateStringProc should not be invoked for type font Aborted and I am back at the bash prompt - this is most frustrating, as there is no friendly traceback to help me guess where its coming from.
44
3697
by: jiang.haiyun | last post by:
Now i began to learn GUI programming. There are so many choices of GUI in the python world, wxPython, pyGTK, PyQT, Tkinter, .etc, it's difficult for a novice to decide, however. Can you draw a comparison among them on easy coding, pythonish design, beautiful and generous looking, powerful development toolkit, and sufficient documentation, .etc. It's helpful for a GUI beginner. Thank you.
2
2551
by: Russell Blau | last post by:
I have some Tkinter programs that I run on two different machines. On Machine W, which runs Python 2.5.1 on Windows XP, these programs run fine. On Machine H, which runs Python 2.5.1 on Windows XP, however, the same programs crash regularly. The crashes are not Python exceptions, but rather are reported by Windows as errors in pythonw.exe. (Of course, the error messages themselves contain absolutely no useful information.) This happens...
0
8944
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
8773
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
9445
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
9306
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
1
9234
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
9180
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
0
6030
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
1
3259
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
2
2721
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.